<exclude-pattern>*/includes/specials/SpecialMostlinkedtemplates\.php</exclude-pattern>
<exclude-pattern>*/includes/specials/SpecialMostrevisions\.php</exclude-pattern>
<exclude-pattern>*/includes/specials/SpecialMovepage\.php</exclude-pattern>
- <exclude-pattern>*/includes/specials/SpecialMyRedirectPages\.php</exclude-pattern>
<exclude-pattern>*/includes/specials/SpecialNewimages\.php</exclude-pattern>
<exclude-pattern>*/includes/specials/SpecialRandompage\.php</exclude-pattern>
<exclude-pattern>*/includes/specials/SpecialShortpages\.php</exclude-pattern>
<exclude-pattern>*/includes/RevisionList\.php</exclude-pattern>
<exclude-pattern>*/includes/search/SearchEngine\.php</exclude-pattern>
<exclude-pattern>*/includes/specialpage/LoginSignupSpecialPage\.php</exclude-pattern>
- <exclude-pattern>*/includes/specialpage/RedirectSpecialPage\.php</exclude-pattern>
<exclude-pattern>*/includes/specials/forms/PreferencesFormLegacy\.php</exclude-pattern>
- <exclude-pattern>*/includes/specials/SpecialListusers\.php</exclude-pattern>
- <exclude-pattern>*/includes/specials/SpecialMyRedirectPages\.php</exclude-pattern>
<exclude-pattern>*/includes/StubObject\.php</exclude-pattern>
<exclude-pattern>*/includes/upload/UploadStash\.php</exclude-pattern>
<exclude-pattern>*/includes/utils/AutoloadGenerator\.php</exclude-pattern>
* SearchResult::setExtensionData argument has been changed from accepting an
array to accepting a Closure that returns the array when called.
* Class CryptRand, everything in MWCryptRand except generateHex() and function
- MediaWikiServices::getCryptRand() are deprecated, use random_bytes() to
- generate cryptographically secure random byte sequences.
+ MediaWikiServices::getInstance()->getCryptRand() are deprecated, use
+ random_bytes() to generate cryptographically secure random byte sequences.
* Parser::getConverterLanguage() is deprecated. Use ::getTargetLanguage()
instead.
* Language::markNoConversion() is deprecated. It confused readers because
* All MagicWord static methods are now deprecated. Use the MagicWordFactory
methods instead.
* PasswordFactory::init is deprecated. To get a password factory with the
- standard configuration, use MediaWikiServices::getPasswordFactory.
-* $wgContLang is deprecated, use MediaWikiServices::getContentLanguage()
+ standard configuration, use
+ MediaWikiServices::getInstance()->getPasswordFactory.
+* $wgContLang is deprecated, use
+ MediaWikiServices::getInstance()->getContentLanguage() instead.
+* $wgParser is deprecated, use MediaWikiServices::getInstance()->getParser()
instead.
-* $wgParser is deprecated, use MediaWikiServices::getParser() instead.
* wfGetMainCache() is deprecated, use ObjectCache::getLocalClusterInstance()
instead.
* wfGetCache() is deprecated, use ObjectCache::getInstance() instead.
'RecentChangesUpdateJob' => __DIR__ . '/includes/jobqueue/jobs/RecentChangesUpdateJob.php',
'RecompressTracked' => __DIR__ . '/maintenance/storage/recompressTracked.php',
'RecountCategories' => __DIR__ . '/maintenance/recountCategories.php',
- 'RedirectSpecialArticle' => __DIR__ . '/includes/specialpage/RedirectSpecialPage.php',
+ 'RedirectSpecialArticle' => __DIR__ . '/includes/specialpage/RedirectSpecialArticle.php',
'RedirectSpecialPage' => __DIR__ . '/includes/specialpage/RedirectSpecialPage.php',
'RedisBagOStuff' => __DIR__ . '/includes/libs/objectcache/RedisBagOStuff.php',
'RedisConnRef' => __DIR__ . '/includes/libs/redis/RedisConnRef.php',
'SlotDiffRenderer' => __DIR__ . '/includes/diff/SlotDiffRenderer.php',
'SpecialActiveUsers' => __DIR__ . '/includes/specials/SpecialActiveusers.php',
'SpecialAllMessages' => __DIR__ . '/includes/specials/SpecialAllMessages.php',
- 'SpecialAllMyUploads' => __DIR__ . '/includes/specials/SpecialMyRedirectPages.php',
+ 'SpecialAllMyUploads' => __DIR__ . '/includes/specials/redirects/SpecialAllMyUploads.php',
'SpecialAllPages' => __DIR__ . '/includes/specials/SpecialAllPages.php',
'SpecialApiHelp' => __DIR__ . '/includes/specials/SpecialApiHelp.php',
'SpecialApiSandbox' => __DIR__ . '/includes/specials/SpecialApiSandbox.php',
'SpecialImport' => __DIR__ . '/includes/specials/SpecialImport.php',
'SpecialJavaScriptTest' => __DIR__ . '/includes/specials/SpecialJavaScriptTest.php',
'SpecialLinkAccounts' => __DIR__ . '/includes/specials/SpecialLinkAccounts.php',
- 'SpecialListAdmins' => __DIR__ . '/includes/specials/SpecialListusers.php',
- 'SpecialListBots' => __DIR__ . '/includes/specials/SpecialListusers.php',
+ 'SpecialListAdmins' => __DIR__ . '/includes/specials/redirects/SpecialListAdmins.php',
+ 'SpecialListBots' => __DIR__ . '/includes/specials/redirects/SpecialListBots.php',
'SpecialListFiles' => __DIR__ . '/includes/specials/SpecialListfiles.php',
'SpecialListGrants' => __DIR__ . '/includes/specials/SpecialListgrants.php',
'SpecialListGroupRights' => __DIR__ . '/includes/specials/SpecialListgrouprights.php',
'SpecialLog' => __DIR__ . '/includes/specials/SpecialLog.php',
'SpecialMergeHistory' => __DIR__ . '/includes/specials/SpecialMergeHistory.php',
'SpecialMyLanguage' => __DIR__ . '/includes/specials/SpecialMyLanguage.php',
- 'SpecialMycontributions' => __DIR__ . '/includes/specials/SpecialMyRedirectPages.php',
- 'SpecialMypage' => __DIR__ . '/includes/specials/SpecialMyRedirectPages.php',
- 'SpecialMytalk' => __DIR__ . '/includes/specials/SpecialMyRedirectPages.php',
- 'SpecialMyuploads' => __DIR__ . '/includes/specials/SpecialMyRedirectPages.php',
+ 'SpecialMycontributions' => __DIR__ . '/includes/specials/redirects/SpecialMycontributions.php',
+ 'SpecialMypage' => __DIR__ . '/includes/specials/redirects/SpecialMypage.php',
+ 'SpecialMytalk' => __DIR__ . '/includes/specials/redirects/SpecialMytalk.php',
+ 'SpecialMyuploads' => __DIR__ . '/includes/specials/redirects/SpecialMyuploads.php',
'SpecialNewFiles' => __DIR__ . '/includes/specials/SpecialNewimages.php',
'SpecialNewpages' => __DIR__ . '/includes/specials/SpecialNewpages.php',
'SpecialPage' => __DIR__ . '/includes/specialpage/SpecialPage.php',
'SpecialRecentChanges' => __DIR__ . '/includes/specials/SpecialRecentchanges.php',
'SpecialRecentChangesLinked' => __DIR__ . '/includes/specials/SpecialRecentchangeslinked.php',
'SpecialRedirect' => __DIR__ . '/includes/specials/SpecialRedirect.php',
- 'SpecialRedirectToSpecial' => __DIR__ . '/includes/specialpage/RedirectSpecialPage.php',
+ 'SpecialRedirectToSpecial' => __DIR__ . '/includes/specialpage/SpecialRedirectToSpecial.php',
'SpecialRemoveCredentials' => __DIR__ . '/includes/specials/SpecialRemoveCredentials.php',
'SpecialResetTokens' => __DIR__ . '/includes/specials/SpecialResetTokens.php',
'SpecialRevisionDelete' => __DIR__ . '/includes/specials/SpecialRevisiondelete.php',
variables.
* Add a constructor to MyExtHooks that takes a Bar service as a parameter.
* Add a static method called newFromGlobalState() with no parameters. It should
- just return new MyExtHooks( MediaWikiServices::getBar() ).
+ just return new MyExtHooks( MediaWikiServices::getInstance()->getBar() ).
* The original static handler method onFoo( $x ) is then implemented as
self::newFromGlobalState()->doFoo( $x ).
/**
* A read-only mode service which does not depend on LoadBalancer.
- * To obtain an instance, use MediaWikiServices::getConfiguredReadOnlyMode().
+ * To obtain an instance, use MediaWikiServices::getInstance()->getConfiguredReadOnlyMode().
*
* @since 1.29
*/
/**
* Prefix for metric names sent to $wgStatsdServer.
*
- * @see MediaWikiServices::getStatsdDataFactory
+ * @see MediaWikiServices::getInstance()->getStatsdDataFactory
* @see BufferingStatsdDataFactory
* @since 1.25
*/
/**
* Get a load balancer object.
*
- * @deprecated since 1.27, use MediaWikiServices::getDBLoadBalancer()
- * or MediaWikiServices::getDBLoadBalancerFactory() instead.
+ * @deprecated since 1.27, use MediaWikiServices::getInstance()->getDBLoadBalancer()
+ * or MediaWikiServices::getInstance()->getDBLoadBalancerFactory() instead.
*
* @param string|bool $wiki Wiki ID, or false for the current wiki
* @return \Wikimedia\Rdbms\LoadBalancer
/**
* Get the load balancer factory object
*
- * @deprecated since 1.27, use MediaWikiServices::getDBLoadBalancerFactory() instead.
+ * @deprecated since 1.27, use MediaWikiServices::getInstance()->getDBLoadBalancerFactory() instead.
*
* @return \Wikimedia\Rdbms\LBFactory
*/
/**
* A service class for fetching the wiki's current read-only mode.
- * To obtain an instance, use MediaWikiServices::getReadOnlyMode().
+ * To obtain an instance, use MediaWikiServices::getInstance()->getReadOnlyMode().
*
* @since 1.29
*/
/**
* @var Parser $wgParser
- * @deprecated since 1.32, use MediaWikiServices::getParser() instead
+ * @deprecated since 1.32, use MediaWikiServices::getInstance()->getParser() instead
*/
$wgParser = new StubObject( 'wgParser', function () {
return MediaWikiServices::getInstance()->getParser();
protected $configs = [];
/**
- * @deprecated since 1.27, use MediaWikiServices::getConfigFactory() instead.
+ * @deprecated since 1.27, use MediaWikiServices::getInstance()->getConfigFactory() instead.
*
* @return ConfigFactory
*/
/**
* Get the database type used for read operations.
*
- * @see MediaWikiServices::getDBLoadBalancer
+ * @see MediaWikiServices::getInstance()->getDBLoadBalancer
*
* @since 1.21
*
* @return string
*/
public function parse( $text, $lineStart = false ) {
- global $wgParser;
+ $parser = MediaWikiServices::getInstance()->getParser();
try {
- $out = $wgParser->parse( $text, $this->parserTitle, $this->parserOptions, $lineStart );
+ $out = $parser->parse( $text, $this->parserTitle, $this->parserOptions, $lineStart );
$html = $out->getText( [
'enableSectionEditLinks' => false,
'unwrap' => true,
$this->request = $request;
// Add parser hooks
- global $wgParser;
- $wgParser->setHook( 'downloadlink', [ $this, 'downloadLinkHook' ] );
- $wgParser->setHook( 'doclink', [ $this, 'docLink' ] );
+ $parser = MediaWikiServices::getInstance()->getParser();
+ $parser->setHook( 'downloadlink', [ $this, 'downloadLinkHook' ] );
+ $parser->setHook( 'doclink', [ $this, 'docLink' ] );
}
/**
*
* @since 1.26
* @return WANObjectCache
- * @deprecated Since 1.28 Use MediaWikiServices::getMainWANObjectCache()
+ * @deprecated Since 1.28 Use MediaWikiServices::getInstance()->getMainWANObjectCache()
*/
public static function getMainWANInstance() {
return MediaWikiServices::getInstance()->getMainWANObjectCache();
*
* @return BagOStuff
* @since 1.26
- * @deprecated Since 1.28 Use MediaWikiServices::getMainObjectStash
+ * @deprecated Since 1.28 Use MediaWikiServices::getInstance()->getMainObjectStash()
*/
public static function getMainStashInstance() {
return MediaWikiServices::getInstance()->getMainObjectStash();
/**
* Construct a new password factory.
- * Most of the time you'll want to use MediaWikiServices::getPasswordFactory instead.
+ * Most of the time you'll want to use MediaWikiServices::getInstance()->getPasswordFactory
+ * instead.
* @param array $config Mapping of password type => config
* @param string $default Default password type
* @see PasswordFactory::register
--- /dev/null
+<?php
+/**
+ * Shortcuts to construct a special page alias.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @ingroup SpecialPage
+ */
+
+/**
+ * Superclass for any RedirectSpecialPage which redirects the user
+ * to a particular article (as opposed to user contributions, logs, etc.).
+ *
+ * For security reasons these special pages are restricted to pass on
+ * the following subset of GET parameters to the target page while
+ * removing all others:
+ *
+ * - useskin, uselang, printable: to alter the appearance of the resulting page
+ *
+ * - redirect: allows viewing one's user page or talk page even if it is a
+ * redirect.
+ *
+ * - rdfrom: allows redirecting to one's user page or talk page from an
+ * external wiki with the "Redirect from..." notice.
+ *
+ * - limit, offset: Useful for linking to history of one's own user page or
+ * user talk page. For example, this would be a link to "the last edit to your
+ * user talk page in the year 2010":
+ * https://en.wikipedia.org/wiki/Special:MyPage?offset=20110000000000&limit=1&action=history
+ *
+ * - feed: would allow linking to the current user's RSS feed for their user
+ * talk page:
+ * https://en.wikipedia.org/w/index.php?title=Special:MyTalk&action=history&feed=rss
+ *
+ * - preloadtitle: Can be used to provide a default section title for a
+ * preloaded new comment on one's own talk page.
+ *
+ * - summary : Can be used to provide a default edit summary for a preloaded
+ * edit to one's own user page or talk page.
+ *
+ * - preview: Allows showing/hiding preview on first edit regardless of user
+ * preference, useful for preloaded edits where you know preview wouldn't be
+ * useful.
+ *
+ * - redlink: Affects the message the user sees if their talk page/user talk
+ * page does not currently exist. Avoids confusion for newbies with no user
+ * pages over why they got a "permission error" following this link:
+ * https://en.wikipedia.org/w/index.php?title=Special:MyPage&redlink=1
+ *
+ * - debug: determines whether the debug parameter is passed to load.php,
+ * which disables reformatting and allows scripts to be debugged. Useful
+ * when debugging scripts that manipulate one's own user page or talk page.
+ *
+ * @par Hook extension:
+ * Extensions can add to the redirect parameters list by using the hook
+ * RedirectSpecialArticleRedirectParams
+ *
+ * This hook allows extensions which add GET parameters like FlaggedRevs to
+ * retain those parameters when redirecting using special pages.
+ *
+ * @par Hook extension example:
+ * @code
+ * $wgHooks['RedirectSpecialArticleRedirectParams'][] =
+ * 'MyExtensionHooks::onRedirectSpecialArticleRedirectParams';
+ * public static function onRedirectSpecialArticleRedirectParams( &$redirectParams ) {
+ * $redirectParams[] = 'stable';
+ * return true;
+ * }
+ * @endcode
+ *
+ * @ingroup SpecialPage
+ */
+abstract class RedirectSpecialArticle extends RedirectSpecialPage {
+ function __construct( $name ) {
+ parent::__construct( $name );
+ $redirectParams = [
+ 'action',
+ 'redirect', 'rdfrom',
+ # Options for preloaded edits
+ 'preload', 'preloadparams', 'editintro', 'preloadtitle', 'summary', 'nosummary',
+ # Options for overriding user settings
+ 'preview', 'minor', 'watchthis',
+ # Options for history/diffs
+ 'section', 'oldid', 'diff', 'dir',
+ 'limit', 'offset', 'feed',
+ # Misc options
+ 'redlink',
+ # Options for action=raw; missing ctype can break JS or CSS in some browsers
+ 'ctype', 'maxage', 'smaxage',
+ ];
+
+ Hooks::run( "RedirectSpecialArticleRedirectParams", [ &$redirectParams ] );
+ $this->mAllowedRedirectParams = $redirectParams;
+ }
+}
throw new MWException( "RedirectSpecialPage $class doesn't redirect!" );
}
}
-
-/**
- * @ingroup SpecialPage
- */
-abstract class SpecialRedirectToSpecial extends RedirectSpecialPage {
- /** @var string Name of redirect target */
- protected $redirName;
-
- /** @var string Name of subpage of redirect target */
- protected $redirSubpage;
-
- function __construct(
- $name, $redirName, $redirSubpage = false,
- $allowedRedirectParams = [], $addedRedirectParams = []
- ) {
- parent::__construct( $name );
- $this->redirName = $redirName;
- $this->redirSubpage = $redirSubpage;
- $this->mAllowedRedirectParams = $allowedRedirectParams;
- $this->mAddedRedirectParams = $addedRedirectParams;
- }
-
- /**
- * @param string|null $subpage
- * @return Title|bool
- */
- public function getRedirect( $subpage ) {
- if ( $this->redirSubpage === false ) {
- return SpecialPage::getTitleFor( $this->redirName, $subpage );
- }
-
- return SpecialPage::getTitleFor( $this->redirName, $this->redirSubpage );
- }
-}
-
-/**
- * Superclass for any RedirectSpecialPage which redirects the user
- * to a particular article (as opposed to user contributions, logs, etc.).
- *
- * For security reasons these special pages are restricted to pass on
- * the following subset of GET parameters to the target page while
- * removing all others:
- *
- * - useskin, uselang, printable: to alter the appearance of the resulting page
- *
- * - redirect: allows viewing one's user page or talk page even if it is a
- * redirect.
- *
- * - rdfrom: allows redirecting to one's user page or talk page from an
- * external wiki with the "Redirect from..." notice.
- *
- * - limit, offset: Useful for linking to history of one's own user page or
- * user talk page. For example, this would be a link to "the last edit to your
- * user talk page in the year 2010":
- * https://en.wikipedia.org/wiki/Special:MyPage?offset=20110000000000&limit=1&action=history
- *
- * - feed: would allow linking to the current user's RSS feed for their user
- * talk page:
- * https://en.wikipedia.org/w/index.php?title=Special:MyTalk&action=history&feed=rss
- *
- * - preloadtitle: Can be used to provide a default section title for a
- * preloaded new comment on one's own talk page.
- *
- * - summary : Can be used to provide a default edit summary for a preloaded
- * edit to one's own user page or talk page.
- *
- * - preview: Allows showing/hiding preview on first edit regardless of user
- * preference, useful for preloaded edits where you know preview wouldn't be
- * useful.
- *
- * - redlink: Affects the message the user sees if their talk page/user talk
- * page does not currently exist. Avoids confusion for newbies with no user
- * pages over why they got a "permission error" following this link:
- * https://en.wikipedia.org/w/index.php?title=Special:MyPage&redlink=1
- *
- * - debug: determines whether the debug parameter is passed to load.php,
- * which disables reformatting and allows scripts to be debugged. Useful
- * when debugging scripts that manipulate one's own user page or talk page.
- *
- * @par Hook extension:
- * Extensions can add to the redirect parameters list by using the hook
- * RedirectSpecialArticleRedirectParams
- *
- * This hook allows extensions which add GET parameters like FlaggedRevs to
- * retain those parameters when redirecting using special pages.
- *
- * @par Hook extension example:
- * @code
- * $wgHooks['RedirectSpecialArticleRedirectParams'][] =
- * 'MyExtensionHooks::onRedirectSpecialArticleRedirectParams';
- * public static function onRedirectSpecialArticleRedirectParams( &$redirectParams ) {
- * $redirectParams[] = 'stable';
- * return true;
- * }
- * @endcode
- *
- * @ingroup SpecialPage
- */
-abstract class RedirectSpecialArticle extends RedirectSpecialPage {
- function __construct( $name ) {
- parent::__construct( $name );
- $redirectParams = [
- 'action',
- 'redirect', 'rdfrom',
- # Options for preloaded edits
- 'preload', 'preloadparams', 'editintro', 'preloadtitle', 'summary', 'nosummary',
- # Options for overriding user settings
- 'preview', 'minor', 'watchthis',
- # Options for history/diffs
- 'section', 'oldid', 'diff', 'dir',
- 'limit', 'offset', 'feed',
- # Misc options
- 'redlink',
- # Options for action=raw; missing ctype can break JS or CSS in some browsers
- 'ctype', 'maxage', 'smaxage',
- ];
-
- Hooks::run( "RedirectSpecialArticleRedirectParams", [ &$redirectParams ] );
- $this->mAllowedRedirectParams = $redirectParams;
- }
-}
--- /dev/null
+<?php
+/**
+ * Shortcuts to construct a special page alias.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @ingroup SpecialPage
+ */
+
+/**
+ * @ingroup SpecialPage
+ */
+abstract class SpecialRedirectToSpecial extends RedirectSpecialPage {
+ /** @var string Name of redirect target */
+ protected $redirName;
+
+ /** @var string Name of subpage of redirect target */
+ protected $redirSubpage;
+
+ function __construct(
+ $name, $redirName, $redirSubpage = false,
+ $allowedRedirectParams = [], $addedRedirectParams = []
+ ) {
+ parent::__construct( $name );
+ $this->redirName = $redirName;
+ $this->redirSubpage = $redirSubpage;
+ $this->mAllowedRedirectParams = $allowedRedirectParams;
+ $this->mAddedRedirectParams = $addedRedirectParams;
+ }
+
+ /**
+ * @param string|null $subpage
+ * @return Title|bool
+ */
+ public function getRedirect( $subpage ) {
+ if ( $this->redirSubpage === false ) {
+ return SpecialPage::getTitleFor( $this->redirName, $subpage );
+ }
+
+ return SpecialPage::getTitleFor( $this->redirName, $this->redirSubpage );
+ }
+}
return 'users';
}
}
-
-/**
- * Redirect page: Special:ListAdmins --> Special:ListUsers/sysop.
- *
- * @ingroup SpecialPage
- */
-class SpecialListAdmins extends SpecialRedirectToSpecial {
- function __construct() {
- parent::__construct( 'Listadmins', 'Listusers', 'sysop' );
- }
-}
-
-/**
- * Redirect page: Special:ListBots --> Special:ListUsers/bot.
- *
- * @ingroup SpecialPage
- */
-class SpecialListBots extends SpecialRedirectToSpecial {
- function __construct() {
- parent::__construct( 'Listbots', 'Listusers', 'bot' );
- }
-}
+++ /dev/null
-<?php
-/**
- * Special pages that are used to get user independent links pointing to
- * current user's pages (user page, talk page, contributions, etc.).
- * This can let us cache a single copy of some generated content for all
- * users or be linked in wikitext help pages.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- * http://www.gnu.org/copyleft/gpl.html
- *
- * @file
- * @ingroup SpecialPage
- */
-
-/**
- * Special page pointing to current user's user page.
- *
- * @ingroup SpecialPage
- */
-class SpecialMypage extends RedirectSpecialArticle {
- public function __construct() {
- parent::__construct( 'Mypage' );
- }
-
- /**
- * @param string|null $subpage
- * @return Title
- */
- public function getRedirect( $subpage ) {
- if ( $subpage === null || $subpage === '' ) {
- return Title::makeTitle( NS_USER, $this->getUser()->getName() );
- }
-
- return Title::makeTitle( NS_USER, $this->getUser()->getName() . '/' . $subpage );
- }
-
- /**
- * Target identifies a specific User. See T109724.
- *
- * @since 1.27
- * @return bool
- */
- public function personallyIdentifiableTarget() {
- return true;
- }
-}
-
-/**
- * Special page pointing to current user's talk page.
- *
- * @ingroup SpecialPage
- */
-class SpecialMytalk extends RedirectSpecialArticle {
- public function __construct() {
- parent::__construct( 'Mytalk' );
- }
-
- /**
- * @param string|null $subpage
- * @return Title
- */
- public function getRedirect( $subpage ) {
- if ( $subpage === null || $subpage === '' ) {
- return Title::makeTitle( NS_USER_TALK, $this->getUser()->getName() );
- }
-
- return Title::makeTitle( NS_USER_TALK, $this->getUser()->getName() . '/' . $subpage );
- }
-
- /**
- * Target identifies a specific User. See T109724.
- *
- * @since 1.27
- * @return bool
- */
- public function personallyIdentifiableTarget() {
- return true;
- }
-}
-
-/**
- * Special page pointing to current user's contributions.
- *
- * @ingroup SpecialPage
- */
-class SpecialMycontributions extends RedirectSpecialPage {
- public function __construct() {
- parent::__construct( 'Mycontributions' );
- $this->mAllowedRedirectParams = [ 'limit', 'namespace', 'tagfilter',
- 'offset', 'dir', 'year', 'month', 'feed', 'deletedOnly',
- 'nsInvert', 'associated', 'newOnly', 'topOnly', 'start', 'end' ];
- }
-
- /**
- * @param string|null $subpage
- * @return Title
- */
- public function getRedirect( $subpage ) {
- return SpecialPage::getTitleFor( 'Contributions', $this->getUser()->getName() );
- }
-
- /**
- * Target identifies a specific User. See T109724.
- *
- * @since 1.27
- * @return bool
- */
- public function personallyIdentifiableTarget() {
- return true;
- }
-}
-
-/**
- * Special page pointing to current user's uploaded files.
- *
- * @ingroup SpecialPage
- */
-class SpecialMyuploads extends RedirectSpecialPage {
- public function __construct() {
- parent::__construct( 'Myuploads' );
- $this->mAllowedRedirectParams = [ 'limit', 'ilshowall', 'ilsearch' ];
- }
-
- /**
- * @param string|null $subpage
- * @return Title
- */
- public function getRedirect( $subpage ) {
- return SpecialPage::getTitleFor( 'Listfiles', $this->getUser()->getName() );
- }
-
- /**
- * Target identifies a specific User. See T109724.
- *
- * @since 1.27
- * @return bool
- */
- public function personallyIdentifiableTarget() {
- return true;
- }
-}
-
-/**
- * Special page pointing to current user's uploaded files (including old versions).
- *
- * @ingroup SpecialPage
- */
-class SpecialAllMyUploads extends RedirectSpecialPage {
- public function __construct() {
- parent::__construct( 'AllMyUploads' );
- $this->mAllowedRedirectParams = [ 'limit', 'ilsearch' ];
- }
-
- /**
- * @param string|null $subpage
- * @return Title
- */
- public function getRedirect( $subpage ) {
- $this->mAddedRedirectParams['ilshowall'] = 1;
-
- return SpecialPage::getTitleFor( 'Listfiles', $this->getUser()->getName() );
- }
-
- /**
- * Target identifies a specific User. See T109724.
- *
- * @since 1.27
- * @return bool
- */
- public function personallyIdentifiableTarget() {
- return true;
- }
-}
--- /dev/null
+<?php
+/**
+ * Special pages that are used to get user independent links pointing to
+ * current user's pages (user page, talk page, contributions, etc.).
+ * This can let us cache a single copy of some generated content for all
+ * users or be linked in wikitext help pages.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @ingroup SpecialPage
+ */
+
+/**
+ * Special page pointing to current user's uploaded files (including old versions).
+ *
+ * @ingroup SpecialPage
+ */
+class SpecialAllMyUploads extends RedirectSpecialPage {
+ public function __construct() {
+ parent::__construct( 'AllMyUploads' );
+ $this->mAllowedRedirectParams = [ 'limit', 'ilsearch' ];
+ }
+
+ /**
+ * @param string|null $subpage
+ * @return Title
+ */
+ public function getRedirect( $subpage ) {
+ $this->mAddedRedirectParams['ilshowall'] = 1;
+
+ return SpecialPage::getTitleFor( 'Listfiles', $this->getUser()->getName() );
+ }
+
+ /**
+ * Target identifies a specific User. See T109724.
+ *
+ * @since 1.27
+ * @return bool
+ */
+ public function personallyIdentifiableTarget() {
+ return true;
+ }
+}
--- /dev/null
+<?php
+/**
+ * Implements Special:ListAdmins
+ *
+ * Copyright © 2004 Brion Vibber, lcrocker, Tim Starling,
+ * Domas Mituzas, Antoine Musso, Jens Frank, Zhengzhu,
+ * 2006 Rob Church <robchur@gmail.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @ingroup SpecialPage
+ */
+
+/**
+ * Redirect page: Special:ListAdmins --> Special:ListUsers/sysop.
+ *
+ * @ingroup SpecialPage
+ */
+class SpecialListAdmins extends SpecialRedirectToSpecial {
+ function __construct() {
+ parent::__construct( 'Listadmins', 'Listusers', 'sysop' );
+ }
+}
--- /dev/null
+<?php
+/**
+ * Implements Special:ListBots
+ *
+ * Copyright © 2004 Brion Vibber, lcrocker, Tim Starling,
+ * Domas Mituzas, Antoine Musso, Jens Frank, Zhengzhu,
+ * 2006 Rob Church <robchur@gmail.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @ingroup SpecialPage
+ */
+
+/**
+ * Redirect page: Special:ListBots --> Special:ListUsers/bot.
+ *
+ * @ingroup SpecialPage
+ */
+class SpecialListBots extends SpecialRedirectToSpecial {
+ function __construct() {
+ parent::__construct( 'Listbots', 'Listusers', 'bot' );
+ }
+}
--- /dev/null
+<?php
+/**
+ * Special pages that are used to get user independent links pointing to
+ * current user's pages (user page, talk page, contributions, etc.).
+ * This can let us cache a single copy of some generated content for all
+ * users or be linked in wikitext help pages.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @ingroup SpecialPage
+ */
+
+/**
+ * Special page pointing to current user's contributions.
+ *
+ * @ingroup SpecialPage
+ */
+class SpecialMycontributions extends RedirectSpecialPage {
+ public function __construct() {
+ parent::__construct( 'Mycontributions' );
+ $this->mAllowedRedirectParams = [ 'limit', 'namespace', 'tagfilter',
+ 'offset', 'dir', 'year', 'month', 'feed', 'deletedOnly',
+ 'nsInvert', 'associated', 'newOnly', 'topOnly', 'start', 'end' ];
+ }
+
+ /**
+ * @param string|null $subpage
+ * @return Title
+ */
+ public function getRedirect( $subpage ) {
+ return SpecialPage::getTitleFor( 'Contributions', $this->getUser()->getName() );
+ }
+
+ /**
+ * Target identifies a specific User. See T109724.
+ *
+ * @since 1.27
+ * @return bool
+ */
+ public function personallyIdentifiableTarget() {
+ return true;
+ }
+}
--- /dev/null
+<?php
+/**
+ * Special pages that are used to get user independent links pointing to
+ * current user's pages (user page, talk page, contributions, etc.).
+ * This can let us cache a single copy of some generated content for all
+ * users or be linked in wikitext help pages.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @ingroup SpecialPage
+ */
+
+/**
+ * Special page pointing to current user's user page.
+ *
+ * @ingroup SpecialPage
+ */
+class SpecialMypage extends RedirectSpecialArticle {
+ public function __construct() {
+ parent::__construct( 'Mypage' );
+ }
+
+ /**
+ * @param string|null $subpage
+ * @return Title
+ */
+ public function getRedirect( $subpage ) {
+ if ( $subpage === null || $subpage === '' ) {
+ return Title::makeTitle( NS_USER, $this->getUser()->getName() );
+ }
+
+ return Title::makeTitle( NS_USER, $this->getUser()->getName() . '/' . $subpage );
+ }
+
+ /**
+ * Target identifies a specific User. See T109724.
+ *
+ * @since 1.27
+ * @return bool
+ */
+ public function personallyIdentifiableTarget() {
+ return true;
+ }
+}
--- /dev/null
+<?php
+/**
+ * Special pages that are used to get user independent links pointing to
+ * current user's pages (user page, talk page, contributions, etc.).
+ * This can let us cache a single copy of some generated content for all
+ * users or be linked in wikitext help pages.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @ingroup SpecialPage
+ */
+
+/**
+ * Special page pointing to current user's talk page.
+ *
+ * @ingroup SpecialPage
+ */
+class SpecialMytalk extends RedirectSpecialArticle {
+ public function __construct() {
+ parent::__construct( 'Mytalk' );
+ }
+
+ /**
+ * @param string|null $subpage
+ * @return Title
+ */
+ public function getRedirect( $subpage ) {
+ if ( $subpage === null || $subpage === '' ) {
+ return Title::makeTitle( NS_USER_TALK, $this->getUser()->getName() );
+ }
+
+ return Title::makeTitle( NS_USER_TALK, $this->getUser()->getName() . '/' . $subpage );
+ }
+
+ /**
+ * Target identifies a specific User. See T109724.
+ *
+ * @since 1.27
+ * @return bool
+ */
+ public function personallyIdentifiableTarget() {
+ return true;
+ }
+}
--- /dev/null
+<?php
+/**
+ * Special pages that are used to get user independent links pointing to
+ * current user's pages (user page, talk page, contributions, etc.).
+ * This can let us cache a single copy of some generated content for all
+ * users or be linked in wikitext help pages.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @ingroup SpecialPage
+ */
+
+/**
+ * Special page pointing to current user's uploaded files.
+ *
+ * @ingroup SpecialPage
+ */
+class SpecialMyuploads extends RedirectSpecialPage {
+ public function __construct() {
+ parent::__construct( 'Myuploads' );
+ $this->mAllowedRedirectParams = [ 'limit', 'ilshowall', 'ilsearch' ];
+ }
+
+ /**
+ * @param string|null $subpage
+ * @return Title
+ */
+ public function getRedirect( $subpage ) {
+ return SpecialPage::getTitleFor( 'Listfiles', $this->getUser()->getName() );
+ }
+
+ /**
+ * Target identifies a specific User. See T109724.
+ *
+ * @since 1.27
+ * @return bool
+ */
+ public function personallyIdentifiableTarget() {
+ return true;
+ }
+}
global $wgHiddenPrefs, $wgDefaultUserOptions;
$dbw = $this->getDB( DB_MASTER );
- $didWork = false;
$hidden = $this->hasOption( 'hidden' );
$unknown = $this->hasOption( 'unknown' );
$bogus = $this->hasOption( 'bogus' );
$this->fatalError( "Unable to read file, exiting" );
}
- $dbw = $this->getDB( DB_MASTER );
-
# Handle each entry
for ( $linenum = 1; !feof( $file ); $linenum++ ) {
$line = trim( fgets( $file ) );
/** @var LoadBalancer */
protected $lb;
- // @todo Unused?
- private $stubText = false; // include rev_text_id instead of text; for 2-pass dump
-
/**
* @param array|null $args For backward compatibility
*/
$complainedAboutUsers = [];
$primaryKey = [ 'ls_value', 'ls_log_id' ];
- $pkFilter = array_flip( $primaryKey );
$this->output( "Beginning migration of log_search\n" );
wfWaitForSlaves();
$extdir = $this->getOption( 'extensions-dir' );
# Allow multiple directories to be passed with ":" as delimiter
$extdirs = explode( ':', $extdir );
- $entries = [];
foreach ( $extdirs as $extdir ) {
$entries = scandir( $extdir );
foreach ( $entries as $extname ) {
$host = $this->getOption( 'host' );
$serverCount = $lb->getServerCount();
for ( $index = 0; $index < $serverCount; ++$index ) {
- $serverInfo = $lb->getServerInfo( $index );
-
if ( $lb->getServerName( $index ) === $host ) {
break;
}
public function execute() {
$this->checkOrphans( $this->hasOption( 'fix' ) );
$this->checkSeparation( $this->hasOption( 'fix' ) );
- # Does not work yet, do not use
- # $this->checkWidows( $this->hasOption( 'fix' ) );
}
/**
if ( $extraTable ) {
$tbls = array_merge( $tbls, $extraTable );
}
- $db->lockTables( [], $tbls, __METHOD__, false );
+ $db->lockTables( [], $tbls, __METHOD__ );
}
/**
}
}
- /**
- * @param bool $fix
- * @todo DON'T USE THIS YET! It will remove entries which have children,
- * but which aren't properly attached (eg if page_latest is bogus
- * but valid revisions do exist)
- */
- private function checkWidows( $fix ) {
- $dbw = $this->getDB( DB_MASTER );
- $page = $dbw->tableName( 'page' );
- $revision = $dbw->tableName( 'revision' );
-
- if ( $fix ) {
- $this->lockTables( $dbw );
- }
-
- $this->output( "\nChecking for childless page table entries... "
- . "(this may take a while on a large wiki)\n" );
- $result = $dbw->query( "
- SELECT *
- FROM $page LEFT OUTER JOIN $revision ON page_latest=rev_id
- WHERE rev_id IS NULL
- " );
- $widows = $result->numRows();
- if ( $widows > 0 ) {
- $this->output( "$widows childless pages...\n" );
- $this->output( sprintf( "%10s %11s %2s %s\n", 'page_id', 'page_latest', 'ns', 'page_title' ) );
- foreach ( $result as $row ) {
- printf( "%10d %11d %2d %s\n",
- $row->page_id,
- $row->page_latest,
- $row->page_namespace,
- $row->page_title );
- if ( $fix ) {
- $dbw->delete( 'page', [ 'page_id' => $row->page_id ] );
- }
- }
- if ( !$fix ) {
- $this->output( "Run again with --fix to remove these entries automatically.\n" );
- }
- } else {
- $this->output( "No childless pages! Yay!\n" );
- }
-
- if ( $fix ) {
- $dbw->unlockTables( __METHOD__ );
- }
- }
-
/**
* Check for pages where page_latest is wrong
* @param bool $fix Whether to fix broken entries
$title = Title::newFromText( $titleArg );
$pageExists = $title && $title->exists();
- $text = '';
$code = 0;
if ( $pageExists ) {
$text = "{$title} exists.";
}
public function doDBUpdates() {
- $force = $this->getOption( 'force' );
-
$db = $this->getDB( DB_MASTER );
$this->output( "Updating *_from_namespace fields in links tables.\n" );
$this->fatalError( "Invalid username" );
}
- // @todo FIXME: This is reset 7 lines down.
- $restrictions = [ 'edit' => $protection, 'move' => $protection ];
-
$t = Title::newFromText( $this->getArg() );
if ( !$t ) {
$this->fatalError( "Invalid title" );
wfWaitForSlaves();
}
$count = 0;
- $batchCount = 0;
$batchConds = [];
do {
$this->output( "Selecting next " . self::BATCH_SIZE . " rows..." );
$this->doSpecialPageCacheUpdates( $dbw );
foreach ( QueryPage::getPages() as $page ) {
- list( $class, $special ) = $page;
+ list( , $special ) = $page;
$limit = $page[2] ?? null;
# --list : just show the name of pages